home *** CD-ROM | disk | FTP | other *** search
/ This Disc Bytes! / Power Computing - The Disc 2 - This Disc Bytes.ISO / mac / CodeWarrior 7 Lite for 68K / MacOS Support / Headers / Universal Headers / OCETemplates.h < prev    next >
Text File  |  1995-07-06  |  52KB  |  1,571 lines

  1. /*
  2.      File:        OCETemplates.h
  3.  
  4.      Contains:    Apple Open Collaboration Environment Templates Interfaces.
  5.  
  6.      Version:    Technology:    AOCE Toolbox 1.02
  7.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __OCETEMPLATES__
  21. #define __OCETEMPLATES__
  22.  
  23. #ifndef REZ
  24.  
  25. #ifndef __TYPES__
  26. #include <Types.h>
  27. #endif
  28. /*    #include <ConditionalMacros.h>                                */
  29.  
  30. #ifndef __EVENTS__
  31. #include <Events.h>
  32. #endif
  33. /*    #include <Quickdraw.h>                                        */
  34. /*        #include <MixedMode.h>                                    */
  35. /*        #include <QuickdrawText.h>                                */
  36. /*    #include <OSUtils.h>                                        */
  37. /*        #include <Memory.h>                                        */
  38.  
  39. #ifndef __CONTROLS__
  40. #include <Controls.h>
  41. #endif
  42. /*    #include <Menus.h>                                            */
  43.  
  44. #ifndef __APPLEEVENTS__
  45. #include <AppleEvents.h>
  46. #endif
  47. /*    #include <Errors.h>                                            */
  48. /*    #include <EPPC.h>                                            */
  49. /*        #include <AppleTalk.h>                                    */
  50. /*        #include <Files.h>                                        */
  51. /*            #include <Finder.h>                                    */
  52. /*        #include <PPCToolbox.h>                                    */
  53. /*        #include <Processes.h>                                    */
  54. /*    #include <Notification.h>                                    */
  55.  
  56. #ifndef __DIALOGS__
  57. #include <Dialogs.h>
  58. #endif
  59. /*    #include <Windows.h>                                        */
  60. /*    #include <TextEdit.h>                                        */
  61. #endif /* REZ */
  62.  
  63. #ifndef __OCE__
  64. #include <OCE.h>
  65. #endif
  66. /*    #include <Aliases.h>                                        */
  67. /*    #include <Script.h>                                            */
  68. /*        #include <IntlResources.h>                                */
  69. #ifndef REZ
  70.  
  71. #ifndef __OCESTANDARDMAIL__
  72. #include <OCEStandardMail.h>
  73. #endif
  74. /*    #include <OCEAuthDir.h>                                        */
  75. /*    #include <OCEMail.h>                                        */
  76. /*        #include <DigitalSignature.h>                            */
  77. /*        #include <OCEMessaging.h>                                */
  78.  
  79. #ifdef __cplusplus
  80. extern "C" {
  81. #endif
  82.  
  83. #if PRAGMA_ALIGN_SUPPORTED
  84. #pragma options align=mac68k
  85. #endif
  86.  
  87. #if PRAGMA_IMPORT_SUPPORTED
  88. #pragma import on
  89. #endif
  90.  
  91. #endif /* REZ */
  92. #define kDETAspectVersion -976
  93. #define kDETInfoPageVersion -976
  94. #define kDETKillerVersion -976
  95. #define kDETForwarderVersion -976
  96. #define kDETFileTypeVersion -976
  97. #define kDETIDSep 250
  98. #define kDETFirstID (1000)
  99. #define kDETSecondID (1000+kDETIDSep)
  100. #define kDETThirdID (1000+2*kDETIDSep)
  101. #define kDETFourthID (1000+3*kDETIDSep)
  102. #define kDETFifthID (1000+4*kDETIDSep)
  103. #define kDETTemplateName 0
  104. #define kDETRecordType 1
  105. #define kDETAttributeType 2
  106. #define kDETAttributeValueTag 3
  107. #define kDETAspectCode 4
  108. #define kDETAspectMainBitmap 5
  109. #define kDETAspectName 6
  110. #define kDETAspectCategory 7
  111. #define kDETAspectExternalCategory 8
  112. #define kDETAspectKind 9
  113. #define kDETAspectGender 10
  114. #define kDETAspectWhatIs 11
  115. #define kDETAspectAliasKind 12
  116. #define kDETAspectAliasGender 13
  117. #define kDETAspectAliasWhatIs 14
  118. #define kDETAspectBalloons 15
  119. #define kDETAspectNewMenuName 16
  120. #define kDETAspectNewEntryName 17
  121. #define kDETAspectNewValue 18
  122. #define kDETAspectSublistOpenOnNew 19
  123. #define kDETAspectLookup 20
  124. #define kDETAspectDragInString 21
  125. #define kDETAspectDragInVerb 22
  126. #define kDETAspectDragInSummary 23
  127. #define kDETAspectRecordDragIn 24
  128. #define kDETAspectRecordCatDragIn 25
  129. #define kDETAspectAttrDragIn 26
  130. #define kDETAspectAttrDragOut 27
  131. #define kDETAspectViewMenu 28
  132. #define kDETAspectReverseSort 29
  133. #define kDETAspectInfoPageCustomWindow 30
  134. #define kDETNoProperty -1
  135. #define kDETFirstLocalProperty 0
  136. #define kDETLastLocalProperty (kDETFirstLocalProperty+249)
  137. #define kDETFirstDevProperty 40
  138. #define kDETFirstConstantProperty 250
  139. #define kDETLastConstantProperty (kDETFirstConstantProperty+249)
  140. #define kDETConstantProperty kDETFirstConstantProperty
  141. #define kDETZeroProperty (kDETConstantProperty+0)
  142. #define kDETOneProperty (kDETConstantProperty+1)
  143. #define kDETFalseProperty (kDETConstantProperty+0)
  144. #define kDETTrueProperty (kDETConstantProperty+1)
  145. #define kDETPrName 3050
  146. #define kDETPrKind 3051
  147. #define kDETDNodeAccessMask 25825
  148. #define kDETRecordAccessMask 25826
  149. #define kDETAttributeAccessMask 25827
  150. #define kDETPrimaryMaskByBit 25828
  151. #define kDETPrimarySeeMask kDETPrimaryMaskByBit
  152. #define kDETPrimaryAddMask (kDETPrimaryMaskByBit+1)
  153. #define kDETPrimaryDeleteMask (kDETPrimaryMaskByBit+2)
  154. #define kDETPrimaryChangeMask (kDETPrimaryMaskByBit+3)
  155. #define kDETPrimaryRenameMask (kDETPrimaryMaskByBit+4)
  156. #define kDETPrimaryChangePrivsMask (kDETPrimaryMaskByBit+5)
  157. #define kDETPrimaryTopMaskBit (kDETPrimaryMaskByBit+15)
  158. #define kDETPastFirstLookup 26550
  159. #define kDETInfoPageNumber 27050
  160. #define kDETAspectTemplateNumber 26551
  161. #define kDETInfoPageTemplateNumber 26552
  162. #define kDETOpenSelectedItems 26553
  163. #define kDETAddNewItem 26554
  164. #define kDETRemoveSelectedItems 26555
  165. #define kDETPrTypeNumber -1
  166. #define kDETPrTypeString -2
  167. #define kDETPrTypeBinary -3
  168. #ifdef REZ
  169. #define typeRString 'rstr'
  170. #define typePackedDSSpec 'dspc'
  171. #define typeBinary 'bnry'
  172. #endif
  173. #define kDETInfoPageName 4
  174. #define kDETInfoPageMainViewAspect 5
  175. #define kDETInfoPageMenuName 6
  176. #define kDETInfoPageMenuEntries 7
  177. #define kDETNoFlags 0
  178. #define kDETEnabled (1 << 0)
  179. #define kDETHilightIfSelected (1 << 0)
  180. #define kDETNumericOnly (1 << 3)
  181. #define kDETMultiLine (1 << 4)
  182. #define kDETDynamicSize (1 << 9)
  183. #define kDETAllowNoColons (1 << 10)
  184. #define kDETPopupDynamicSize (1 << 8)
  185. #define kDETScaleToView (1 << 8)
  186. #define kDETLargeIcon 0
  187. #define kDETSmallIcon 1
  188. #define kDETMiniIcon 2
  189. #define kDETLeft 0
  190. #define kDETCenter 1
  191. #define kDETRight -1
  192. #define kDETForceLeft -2
  193. #define kDETUnused 0
  194. #define kDETBoxTakesContentClicks (1 << 0)
  195. #define kDETBoxIsRounded (1 << 1)
  196. #define kDETBoxIsGrayed (1 << 2)
  197. #define kDETBoxIsInvisible (1 << 3)
  198. #define kDETApplicationFont 1
  199. #define kDETApplicationFontSize 9
  200. #define kDETAppFontLineHeight 12
  201. #define kDETSystemFont 0
  202. #define kDETSystemFontSize 12
  203. #define kDETSystemFontLineHeight 16
  204. #define kDETDefaultFont 1
  205. #define kDETDefaultFontSize 9
  206. #define kDETDefaultFontLineHeight 12
  207. #define kDETNormal 0
  208. #define kDETBold 1
  209. #define kDETItalic 2
  210. #define kDETUnderline 4
  211. #define kDETOutline 8
  212. #define kDETShadow 0x10
  213. #define kDETCondense 0x20
  214. #define kDETExtend 0x40
  215. #define kDETIconStyle -3
  216. #define kDETChangeViewCommand 'view'
  217. #define kDETRecordInfoWindHeight 228
  218. #define kDETRecordInfoWindWidth 400
  219. #define kDETAttributeInfoWindHeight 250
  220. #define kDETAttributeInfoWindWidth 230
  221. #define kDETSubpageIconTop 8
  222. #define kDETSubpageIconLeft 8
  223. #define kDETSubpageIconBottom (kDETSubpageIconTop+32)
  224. #define kDETSubpageIconRight (kDETSubpageIconLeft+32)
  225. #define kDETSubpageIconRect {kDETSubpageIconTop, kDETSubpageIconLeft, kDETSubpageIconBottom, kDETSubpageIconRight}
  226. #define kDETNoSublistRect {0, 0, 0, 0}
  227. #define kDETKillerName 1
  228. #define kDETForwarderTemplateNames 4
  229. #define kDETCategoryAllItems "aoce All Items"
  230. #define kDETCategoryAddressItems "aoce Address Items"
  231. #define kDETCategoryMisc "aoce Miscellaneous"
  232. #ifndef REZ
  233. /* Target specification: */
  234.  
  235. enum {
  236.     kDETSelf                    = 0,                            /* The "current" item */
  237.     kDETSelfOtherAspect,                                        /* Another aspect of the current item */
  238.     kDETParent,                                                    /* The parent (i.e., the aspect we're in the sublist of, if any) of the current item */
  239.     kDETSublistItem,                                            /* The itemNumberth item in the sublist */
  240.     kDETSelectedSublistItem,                                    /* The itemNumberth selected item in the sublist */
  241.     kDETDSSpec,                                                    /* The item specified by the packed DSSpec */
  242.     kDETAspectTemplate,                                            /* A specific aspect template (number itemNumber) */
  243.     kDETInfoPageTemplate,                                        /* A specific info-page template (number itemNumber)
  244.     *  Force type to be short */
  245.     kDETHighSelector            = 0xF000
  246. };
  247.  
  248. typedef long DETTargetSelector;
  249.  
  250. struct DETTargetSpecification {
  251.     DETTargetSelector                selector;                    /* Target selection method (see above) */
  252.     RStringPtr                        aspectName;                    /* The name of the aspect (kDETSelfOtherAspect, kDETSublistItem,
  253.                                            kDETSelectedSublistItem, kDETDSSpec); nil for main aspect or none;
  254.                                            always filled in for calls if there is an aspect, even if it's the main aspect */
  255.     long                            itemNumber;                    /* Sublist index (kDETSublistItem & kDETSelectedSublistItem & kDETAspectTemplate);
  256.                                            1-based indexing */
  257.     PackedDSSpecPtr                    dsSpec;                        /* DSSpec (kDETDSSpec only) */
  258. };
  259.  
  260. typedef struct DETTargetSpecification DETTargetSpecification;
  261.  
  262. /* Code resource calls and call-backs both return an OSType:
  263.         kDETDidNotHandle (1)    = used by template to say "I didn't handle it" (for calls only)
  264.         noErr                    = function completed successfully
  265.         any error                = function failed, and here's why
  266. */
  267. #define kDETDidNotHandle 1
  268.  
  269. enum {
  270.     kDETcmdSimpleCallback        = 0,
  271.     kDETcmdBeep,
  272.     kDETcmdBusy,
  273.     kDETcmdChangeCallFors,
  274.     kDETcmdGetCommandSelectionCount,
  275.     kDETcmdGetCommandItemN,
  276.     kDETcmdOpenDSSpec,
  277.     kDETcmdAboutToTalk,
  278.     kDETcmdUnloadTemplates,
  279.     kDETcmdTemplateCounts,
  280.     kDETcmdTargetedCallback        = 1000,
  281.     kDETcmdGetDSSpec,
  282.     kDETcmdSublistCount,
  283.     kDETcmdSelectedSublistCount,
  284.     kDETcmdRequestSync,
  285.     kDETcmdBreakAttribute,
  286.     kDETcmdGetTemplateFSSpec,
  287.     kDETcmdGetOpenEdit,
  288.     kDETcmdCloseEdit,
  289.     kDETcmdPropertyCallback        = 2000,
  290.     kDETcmdGetPropertyType,
  291.     kDETcmdGetPropertyNumber,
  292.     kDETcmdGetPropertyRString,
  293.     kDETcmdGetPropertyBinarySize,
  294.     kDETcmdGetPropertyBinary,
  295.     kDETcmdGetPropertyChanged,
  296.     kDETcmdGetPropertyEditable,
  297.     kDETcmdSetPropertyType,
  298.     kDETcmdSetPropertyNumber,
  299.     kDETcmdSetPropertyRString,
  300.     kDETcmdSetPropertyBinary,
  301.     kDETcmdSetPropertyChanged,
  302.     kDETcmdSetPropertyEditable,
  303.     kDETcmdDirtyProperty,
  304.     kDETcmdDoPropertyCommand,
  305.     kDETcmdAddMenu,
  306.     kDETcmdRemoveMenu,
  307.     kDETcmdMenuItemRString,
  308.     kDETcmdSaveProperty,
  309.     kDETcmdGetCustomViewUserReference,
  310.     kDETcmdGetCustomViewBounds,
  311.     kDETcmdGetResource,
  312. /* Force type to be long */
  313.     kDETcmdHighCallback            = 0xF0000000
  314. };
  315.  
  316. typedef unsigned long DETCallBackFunctions;
  317.  
  318. #define DETCallBackBlockHeader     \
  319.     DETCallBackFunctions reqFunction;
  320. #define DETCallBackBlockTargetedHeader  \
  321.     DETCallBackFunctions reqFunction;     \
  322.     DETTargetSpecification target;
  323. #define DETCallBackBlockPropertyHeader  \
  324.     DETCallBackFunctions reqFunction;     \
  325.     DETTargetSpecification target;     \
  326.     short property;
  327. struct DETProtoCallBackBlock {
  328.     DETCallBackFunctions            reqFunction;
  329.     DETTargetSpecification            target;
  330.     short                            property;
  331. };
  332.  
  333. typedef struct DETProtoCallBackBlock DETProtoCallBackBlock;
  334.  
  335. struct DETBeepBlock {
  336.     DETCallBackFunctions            reqFunction;
  337. };
  338.  
  339. typedef struct DETBeepBlock DETBeepBlock;
  340.  
  341. struct DETBusyBlock {
  342.     DETCallBackFunctions            reqFunction;
  343. };
  344.  
  345. typedef struct DETBusyBlock DETBusyBlock;
  346.  
  347. struct DETChangeCallForsBlock {
  348.     DETCallBackFunctions            reqFunction;
  349.     DETTargetSpecification            target;
  350.     long                            newCallFors;                /*  -> New call-for mask */
  351. };
  352.  
  353. typedef struct DETChangeCallForsBlock DETChangeCallForsBlock;
  354.  
  355. struct DETGetCommandSelectionCountBlock {
  356.     DETCallBackFunctions            reqFunction;
  357.     long                            count;                        /* <-  The number of items in the command selection list */
  358. };
  359.  
  360. typedef struct DETGetCommandSelectionCountBlock DETGetCommandSelectionCountBlock;
  361.  
  362.  
  363. enum {
  364.     kDETHFSType                    = 0,                            /* HFS item type */
  365.     kDETDSType,                                                    /* Catalog Service item type */
  366.     kDETMailType,                                                /* Mail (letter) item type */
  367.     kDETMoverType,                                                /* Sounds, fonts, etc., from inside a suitcase or system file */
  368.     kDETLastItemType            = 0xF0000000                    /* Force it to be a long (C & C++ seem to disagree about the definition of 0xF000) */
  369. };
  370.  
  371. typedef unsigned long DETItemType;
  372.  
  373. /* FSSpec plus possibly interesting additional info */
  374. struct DETFSInfo {
  375.     OSType                            fileType;                    /* File type */
  376.     OSType                            fileCreator;                /* File creator */
  377.     unsigned short                    fdFlags;                    /* Finder flags */
  378.     FSSpec                            fsSpec;                        /* FSSpec */
  379. };
  380.  
  381. typedef struct DETFSInfo DETFSInfo;
  382.  
  383. struct DSRec {
  384.     PackedDSSpecPtr                    *dsSpec;                    /* <-  DSSpec for item (caller must DisposHandle() when done) */
  385.     short                            refNum;                        /* <-  Refnum for returned address */
  386.     AuthIdentity                    identity;                    /* <-  Identity for returned address */
  387. };
  388.  
  389. typedef struct DSRec DSRec;
  390.  
  391. union ItemRec {
  392.     DETFSInfo                        **fsInfo;                    /* <-  FSSpec & info for item (caller must DisposHandle() when done) */
  393.     DSRec                            ds;
  394.     PackedDSSpecPtr                    *dsSpec;                    /* <-  DSSpec for item (caller must DisposHandle() when done) */
  395.     LetterSpec                        **ltrSpec;                    /* <-  Letter spec for item (caller must DisposHandle() when done) */
  396. };
  397. typedef union ItemRec ItemRec;
  398.  
  399. struct DETGetCommandItemNBlock {
  400.     DETCallBackFunctions            reqFunction;
  401.     long                            itemNumber;                    /*  -> Item number to retrieve (1-based) */
  402.     DETItemType                        itemType;                    /*  -> Type of item to be returned (if we can interpret it as such) */
  403.     ItemRec                            item;
  404. };
  405.  
  406. typedef struct DETGetCommandItemNBlock DETGetCommandItemNBlock;
  407.  
  408. struct DETGetDSSpecBlock {
  409.     DETCallBackFunctions            reqFunction;
  410.     DETTargetSpecification            target;
  411.     PackedDSSpecPtr                    *dsSpec;                    /* <-  Handle with result (caller must DisposHandle() when done) */
  412.     short                            refNum;                        /* <-  Refnum for address if PD */
  413.     AuthIdentity                    identity;                    /* <-  Identity for address */
  414.     Boolean                            isAlias;                    /* <-  True if this entry is an alias */
  415.     Boolean                            isRecordRef;                /* <-  True if this entry is a record reference (reserved) */
  416. };
  417.  
  418. typedef struct DETGetDSSpecBlock DETGetDSSpecBlock;
  419.  
  420. struct DETGetTemplateFSSpecBlock {
  421.     DETCallBackFunctions            reqFunction;
  422.     DETTargetSpecification            target;
  423.     FSSpec                            fsSpec;                        /* <-  FSSpec of template file */
  424.     short                            baseID;                        /* <-  Base ID of this template */
  425.     long                            aspectTemplateNumber;        /* <-  The template number for this aspect template */
  426. };
  427.  
  428. typedef struct DETGetTemplateFSSpecBlock DETGetTemplateFSSpecBlock;
  429.  
  430. struct DETGetOpenEditBlock {
  431.     DETCallBackFunctions            reqFunction;
  432.     DETTargetSpecification            target;
  433.     short                            viewProperty;                /* <-  The property of the view being edited (or kNoProperty if none) */
  434. };
  435.  
  436. typedef struct DETGetOpenEditBlock DETGetOpenEditBlock;
  437.  
  438. struct DETCloseEditBlock {
  439.     DETCallBackFunctions            reqFunction;
  440.     DETTargetSpecification            target;
  441. };
  442.  
  443. typedef struct DETCloseEditBlock DETCloseEditBlock;
  444.  
  445. struct DETGetPropertyTypeBlock {
  446.     DETCallBackFunctions            reqFunction;
  447.     DETTargetSpecification            target;
  448.     short                            property;
  449.     short                            propertyType;                /* <-  The type of the property */
  450. };
  451.  
  452. typedef struct DETGetPropertyTypeBlock DETGetPropertyTypeBlock;
  453.  
  454. struct DETGetPropertyNumberBlock {
  455.     DETCallBackFunctions            reqFunction;
  456.     DETTargetSpecification            target;
  457.     short                            property;
  458.     unsigned long                    propertyValue;                /* <-  The value of the property */
  459. };
  460.  
  461. typedef struct DETGetPropertyNumberBlock DETGetPropertyNumberBlock;
  462.  
  463. struct DETGetPropertyRStringBlock {
  464.     DETCallBackFunctions            reqFunction;
  465.     DETTargetSpecification            target;
  466.     short                            property;
  467.     RStringHandle                    propertyValue;                /* <-  A handle containing the property (as an RString) (caller must DisposHandle() when done) */
  468. };
  469.  
  470. typedef struct DETGetPropertyRStringBlock DETGetPropertyRStringBlock;
  471.  
  472. struct DETGetPropertyBinarySizeBlock {
  473.     DETCallBackFunctions            reqFunction;
  474.     DETTargetSpecification            target;
  475.     short                            property;
  476.     long                            propertyBinarySize;            /* <-  The size of the property as a binary block */
  477. };
  478.  
  479. typedef struct DETGetPropertyBinarySizeBlock DETGetPropertyBinarySizeBlock;
  480.  
  481. struct DETGetPropertyBinaryBlock {
  482.     DETCallBackFunctions            reqFunction;
  483.     DETTargetSpecification            target;
  484.     short                            property;
  485.     Handle                            propertyValue;                /* <-  Handle with the value of the property (caller must DisposHandle() when done) */
  486. };
  487.  
  488. typedef struct DETGetPropertyBinaryBlock DETGetPropertyBinaryBlock;
  489.  
  490. struct DETGetPropertyChangedBlock {
  491.     DETCallBackFunctions            reqFunction;
  492.     DETTargetSpecification            target;
  493.     short                            property;
  494.     Boolean                            propertyChanged;            /* <-  True if the property is marked as changed */
  495.     Boolean                            filler1;
  496. };
  497.  
  498. typedef struct DETGetPropertyChangedBlock DETGetPropertyChangedBlock;
  499.  
  500. struct DETGetPropertyEditableBlock {
  501.     DETCallBackFunctions            reqFunction;
  502.     DETTargetSpecification            target;
  503.     short                            property;
  504.     Boolean                            propertyEditable;            /* <-  True if the property can be edited by the user (if false, view will appear disabled) */
  505.     Boolean                            filler1;
  506. };
  507.  
  508. typedef struct DETGetPropertyEditableBlock DETGetPropertyEditableBlock;
  509.  
  510. struct DETSetPropertyTypeBlock {
  511.     DETCallBackFunctions            reqFunction;
  512.     DETTargetSpecification            target;
  513.     short                            property;
  514.     short                            newType;                    /*  -> New type for property (just sets type, does not convert contents) */
  515. };
  516.  
  517. typedef struct DETSetPropertyTypeBlock DETSetPropertyTypeBlock;
  518.  
  519. struct DETSetPropertyNumberBlock {
  520.     DETCallBackFunctions            reqFunction;
  521.     DETTargetSpecification            target;
  522.     short                            property;
  523.     unsigned long                    newValue;                    /*  -> New value to set property to (and set type to number) */
  524. };
  525.  
  526. typedef struct DETSetPropertyNumberBlock DETSetPropertyNumberBlock;
  527.  
  528. struct DETSetPropertyRStringBlock {
  529.     DETCallBackFunctions            reqFunction;
  530.     DETTargetSpecification            target;
  531.     short                            property;
  532.     RStringPtr                        newValue;                    /*  -> New value to set property to (and set type to RString) */
  533. };
  534.  
  535. typedef struct DETSetPropertyRStringBlock DETSetPropertyRStringBlock;
  536.  
  537. struct DETSetPropertyBinaryBlock {
  538.     DETCallBackFunctions            reqFunction;
  539.     DETTargetSpecification            target;
  540.     short                            property;
  541.     Ptr                                newValue;                    /*  -> New value to set property to (and set type to binary) */
  542.     long                            newValueSize;                /*  -> Size of new value */
  543. };
  544.  
  545. typedef struct DETSetPropertyBinaryBlock DETSetPropertyBinaryBlock;
  546.  
  547. struct DETSetPropertyChangedBlock {
  548.     DETCallBackFunctions            reqFunction;
  549.     DETTargetSpecification            target;
  550.     short                            property;
  551.     Boolean                            propertyChanged;            /*  -> Value to set changed flag on property to */
  552.     Boolean                            filler1;
  553. };
  554.  
  555. typedef struct DETSetPropertyChangedBlock DETSetPropertyChangedBlock;
  556.  
  557. struct DETSetPropertyEditableBlock {
  558.     DETCallBackFunctions            reqFunction;
  559.     DETTargetSpecification            target;
  560.     short                            property;
  561.     Boolean                            propertyEditable;            /*  -> Value to set editable flag on property to */
  562.     Boolean                            filler1;
  563. };
  564.  
  565. typedef struct DETSetPropertyEditableBlock DETSetPropertyEditableBlock;
  566.  
  567. struct DETDirtyPropertyBlock {
  568.     DETCallBackFunctions            reqFunction;
  569.     DETTargetSpecification            target;
  570.     short                            property;
  571. };
  572.  
  573. typedef struct DETDirtyPropertyBlock DETDirtyPropertyBlock;
  574.  
  575. struct DETDoPropertyCommandBlock {
  576.     DETCallBackFunctions            reqFunction;
  577.     DETTargetSpecification            target;
  578.     short                            property;
  579.     long                            parameter;                    /* ->  Parameter of command */
  580. };
  581.  
  582. typedef struct DETDoPropertyCommandBlock DETDoPropertyCommandBlock;
  583.  
  584. struct DETSublistCountBlock {
  585.     DETCallBackFunctions            reqFunction;
  586.     DETTargetSpecification            target;
  587.     long                            count;                        /* <-  The number of items in the current item's sublist */
  588. };
  589.  
  590. typedef struct DETSublistCountBlock DETSublistCountBlock;
  591.  
  592. struct DETSelectedSublistCountBlock {
  593.     DETCallBackFunctions            reqFunction;
  594.     DETTargetSpecification            target;
  595.     long                            count;                        /* <-  The number of selected items in the current item's sublist */
  596. };
  597.  
  598. typedef struct DETSelectedSublistCountBlock DETSelectedSublistCountBlock;
  599.  
  600. struct DETRequestSyncBlock {
  601.     DETCallBackFunctions            reqFunction;
  602.     DETTargetSpecification            target;
  603. };
  604.  
  605. typedef struct DETRequestSyncBlock DETRequestSyncBlock;
  606.  
  607. struct DETAddMenuBlock {
  608.     DETCallBackFunctions            reqFunction;
  609.     DETTargetSpecification            target;
  610.     short                            property;
  611.     RString                            *name;                        /*  -> Name of new menu item */
  612.     long                            parameter;                    /*  -> Parameter to return when this item is selected */
  613.     long                            addAfter;                    /*  -> Parameter of entry to add after, or -1 for add at end */
  614. };
  615.  
  616. typedef struct DETAddMenuBlock DETAddMenuBlock;
  617.  
  618. struct DETRemoveMenuBlock {
  619.     DETCallBackFunctions            reqFunction;
  620.     DETTargetSpecification            target;
  621.     short                            property;
  622.     long                            itemToRemove;                /*  -> Parameter of menu item to remove */
  623. };
  624.  
  625. typedef struct DETRemoveMenuBlock DETRemoveMenuBlock;
  626.  
  627. struct DETMenuItemRStringBlock {
  628.     DETCallBackFunctions            reqFunction;
  629.     DETTargetSpecification            target;
  630.     short                            property;
  631.     long                            itemParameter;                /*  -> Parameter of menu item to return string for */
  632.     RStringHandle                    rString;                    /* <-  Handle with the RString (caller must DisposHandle() when done) */
  633. };
  634.  
  635. typedef struct DETMenuItemRStringBlock DETMenuItemRStringBlock;
  636.  
  637. struct DETOpenDSSpecBlock {
  638.     DETCallBackFunctions            reqFunction;
  639.     PackedDSSpecPtr                    dsSpec;                        /*  -> DSSpec of object to be opened */
  640. };
  641.  
  642. typedef struct DETOpenDSSpecBlock DETOpenDSSpecBlock;
  643.  
  644. struct DETAboutToTalkBlock {
  645.     DETCallBackFunctions            reqFunction;
  646. };
  647.  
  648. typedef struct DETAboutToTalkBlock DETAboutToTalkBlock;
  649.  
  650. struct DETBreakAttributeBlock {
  651.     DETCallBackFunctions            reqFunction;
  652.     DETTargetSpecification            target;
  653.     AttributePtr                    breakAttribute;                /*  -> Attribute to parse */
  654.     Boolean                            isChangeable;                /*  -> True if the value can be changed by the user */
  655.     Boolean                            filler1;
  656. };
  657.  
  658. typedef struct DETBreakAttributeBlock DETBreakAttributeBlock;
  659.  
  660. struct DETSavePropertyBlock {
  661.     DETCallBackFunctions            reqFunction;
  662.     DETTargetSpecification            target;
  663.     short                            property;
  664. };
  665.  
  666. typedef struct DETSavePropertyBlock DETSavePropertyBlock;
  667.  
  668. struct DETGetCustomViewUserReferenceBlock {
  669.     DETCallBackFunctions            reqFunction;
  670.     DETTargetSpecification            target;
  671.     short                            property;
  672.     short                            userReference;                /* <-  User reference value, as specified in the .r file */
  673. };
  674.  
  675. typedef struct DETGetCustomViewUserReferenceBlock DETGetCustomViewUserReferenceBlock;
  676.  
  677. struct DETGetCustomViewBoundsBlock {
  678.     DETCallBackFunctions            reqFunction;
  679.     DETTargetSpecification            target;
  680.     short                            property;
  681.     Rect                            bounds;                        /* <-  Bounds of the view */
  682. };
  683.  
  684. typedef struct DETGetCustomViewBoundsBlock DETGetCustomViewBoundsBlock;
  685.  
  686. struct DETGetResourceBlock {
  687.     DETCallBackFunctions            reqFunction;
  688.     DETTargetSpecification            target;
  689.     short                            property;
  690.     ResType                            resourceType;                /*  -> Resource type */
  691.     Handle                            theResource;                /* <-  The resource handle (caller must dispose when done) */
  692. };
  693.  
  694. typedef struct DETGetResourceBlock DETGetResourceBlock;
  695.  
  696. struct DETTemplateCounts {
  697.     DETCallBackFunctions            reqFunction;
  698.     long                            aspectTemplateCount;        /* <-  Number of aspect templates in the system */
  699.     long                            infoPageTemplateCount;        /* <-  Number of info-page templates in the system */
  700. };
  701.  
  702. typedef struct DETTemplateCounts DETTemplateCounts;
  703.  
  704. struct DETUnloadTemplatesBlock {
  705.     DETCallBackFunctions            reqFunction;
  706. };
  707.  
  708. typedef struct DETUnloadTemplatesBlock DETUnloadTemplatesBlock;
  709.  
  710. union DETCallBackBlock {
  711.     DETProtoCallBackBlock            protoCallBack;
  712.     DETBeepBlock                    beep;
  713.     DETBusyBlock                    busy;
  714.     DETChangeCallForsBlock            changeCallFors;
  715.     DETGetCommandSelectionCountBlock getCommandSelectionCount;
  716.     DETGetCommandItemNBlock            getCommandItemN;
  717.     DETGetDSSpecBlock                getDSSpec;
  718.     DETGetTemplateFSSpecBlock        getTemplateFSSpec;
  719.     DETGetOpenEditBlock                getOpenEdit;
  720.     DETCloseEditBlock                closeEdit;
  721.     DETGetPropertyTypeBlock            getPropertyType;
  722.     DETGetPropertyNumberBlock        getPropertyNumber;
  723.     DETGetPropertyRStringBlock        getPropertyRString;
  724.     DETGetPropertyBinarySizeBlock    getPropertyBinarySize;
  725.     DETGetPropertyBinaryBlock        getPropertyBinary;
  726.     DETGetPropertyChangedBlock        getPropertyChanged;
  727.     DETGetPropertyEditableBlock        getPropertyEditable;
  728.     DETSetPropertyTypeBlock            setPropertyType;
  729.     DETSetPropertyNumberBlock        setPropertyNumber;
  730.     DETSetPropertyRStringBlock        setPropertyRString;
  731.     DETSetPropertyBinaryBlock        setPropertyBinary;
  732.     DETSetPropertyChangedBlock        setPropertyChanged;
  733.     DETSetPropertyEditableBlock        setPropertyEditable;
  734.     DETDirtyPropertyBlock            dirtyProperty;
  735.     DETDoPropertyCommandBlock        doPropertyCommand;
  736.     DETSublistCountBlock            sublistCount;
  737.     DETSelectedSublistCountBlock    selectedSublistCount;
  738.     DETRequestSyncBlock                requestSync;
  739.     DETAddMenuBlock                    addMenu;
  740.     DETRemoveMenuBlock                removeMenu;
  741.     DETMenuItemRStringBlock            menuItemRString;
  742.     DETOpenDSSpecBlock                openDSSpec;
  743.     DETAboutToTalkBlock                aboutToTalk;
  744.     DETBreakAttributeBlock            breakAttribute;
  745.     DETSavePropertyBlock            saveProperty;
  746.     DETGetCustomViewUserReferenceBlock getCustomViewUserReference;
  747.     DETGetCustomViewBoundsBlock        getCustomViewBounds;
  748.     DETGetResourceBlock                getResource;
  749.     DETTemplateCounts                templateCounts;
  750.     DETUnloadTemplatesBlock            unloadTemplates;
  751. };
  752. typedef union DETCallBackBlock DETCallBackBlock;
  753.  
  754. typedef DETCallBackBlock *DETCallBackBlockPtr;
  755.  
  756. typedef pascal OSErr (*DETCallBackProcPtr)(union DETCallBlock *callBlockPtr, DETCallBackBlockPtr callBackBlockPtr);
  757.  
  758. #if GENERATINGCFM
  759. typedef UniversalProcPtr DETCallBackUPP;
  760. #else
  761. typedef DETCallBackProcPtr DETCallBackUPP;
  762. #endif
  763.  
  764. typedef DETCallBackUPP DETCallBack;
  765.  
  766. /* Call functions:
  767.  
  768.         reqFunction                        Action
  769.         -----------                        ------
  770.         kDETcmdInit                        Called once when template is first loaded (good time to allocate private data); returns call-for list
  771.         kDETcmdExit                        Called once when template is freed (good time to free private data)
  772.  
  773.         kDETcmdAttributeCreation        New sublist attribute creation about to occur; this gives the template a chance to modify
  774.                                         the value that's about to be created; sent to the template that will be used for
  775.                                         the main aspect of the new entry
  776.  
  777.         kDETcmdDynamicForwarders        Return a list of dynamically created forwarders
  778.  
  779.         kDETcmdInstanceInit                Called once when instance of template is started (good time to allocate private instance data)
  780.         kDETcmdInstanceExit                Called once when instance is ended (good time to free private instance data)
  781.  
  782.         kDETcmdIdle                        Called periodically during idle times
  783.  
  784.         kDETcmdViewListChanged            Called when the info-page view-list (list of enabled views) has changed
  785.  
  786.         kDETcmdValidateSave                Validate save: about to save info-page, return noErr (or kDETDidNotHandle) if it's OK to do so
  787.  
  788.         kDETcmdDropQuery                Drop query: return the appropriate operation for this drag; ask destination
  789.         kDETcmdDropMeQuery                Drop query: return the appropriate operation for this drag; ask dropee
  790.  
  791.         kDETcmdAttributeNew                Attribute value new (return kDETDidNotHandle to let normal new processing occur)
  792.         kDETcmdAttributeChange            Attribute value change (return kDETDidNotHandle to let normal change processing occur)
  793.         kDETcmdAttributeDelete            Attribute value delete (return kDETDidNotHandle to let normal deletion occur); sent to the
  794.                                         main aspect of the attribute that's about to be deleted
  795.         kDETcmdItemNew                    Target item (record or attribute) has just been created
  796.  
  797.         kDETcmdOpenSelf                    Self open (return noErr to prevent opening; return kDETDidNotHandle to allow it)
  798.  
  799.         kDETcmdDynamicResource            Return a dynamically created resource
  800.  
  801.         kDETcmdShouldSync                Check if the code resource wants to force a sync (update data from catalog)
  802.         kDETcmdDoSync                    Give code resource a chance to sync (read in and break all attributes)
  803.  
  804.         kDETcmdPropertyCommand            Command received in the property number range (usually means a button's been pushed)
  805.  
  806.         kDETcmdMaximumTextLength        Return maximum size for text form of property
  807.  
  808.         kDETcmdPropertyDirtied            Property dirtied, need to redraw
  809.  
  810.         kDETcmdPatternIn                Custom pattern element encountered on reading in an attribute
  811.         kDETcmdPatternOut                Custom pattern element encountered on writing out an attribute
  812.  
  813.         kDETcmdConvertToNumber            Convert from template-defined property type to number
  814.         kDETcmdConvertToRString            Convert from template-defined property type to RString
  815.         kDETcmdConvertFromNumber        Convert from number to template-defined property type
  816.         kDETcmdConvertFromRString        Convert from RString to template-defined property type
  817.  
  818.         kDETcmdCustomViewDraw            Custom view draw
  819.         kDETcmdCustomViewMouseDown        Custom view mouse down
  820.  
  821.         kDETcmdKeyPress                    Key press (used primarily to filter entry into EditText views)
  822.         kDETcmdPaste                    Paste (used primarily to filter entry into EditText views)
  823.  
  824.         kDETcmdCustomMenuSelected        Custom Catalogs menu selected
  825.         kDETcmdCustomMenuEnabled        Return whether custom Catalogs menu entry should be enabled
  826. */
  827.  
  828. enum {
  829.     kDETcmdSimpleCall            = 0,
  830.     kDETcmdInit,
  831.     kDETcmdExit,
  832.     kDETcmdAttributeCreation,
  833.     kDETcmdDynamicForwarders,
  834.     kDETcmdTargetedCall            = 1000,
  835.     kDETcmdInstanceInit,
  836.     kDETcmdInstanceExit,
  837.     kDETcmdIdle,
  838.     kDETcmdViewListChanged,
  839.     kDETcmdValidateSave,
  840.     kDETcmdDropQuery,
  841.     kDETcmdDropMeQuery,
  842.     kDETcmdAttributeNew,
  843.     kDETcmdAttributeChange,
  844.     kDETcmdAttributeDelete,
  845.     kDETcmdItemNew,
  846.     kDETcmdOpenSelf,
  847.     kDETcmdDynamicResource,
  848.     kDETcmdShouldSync,
  849.     kDETcmdDoSync,
  850.     kDETcmdPropertyCall            = 2000,
  851.     kDETcmdPropertyCommand,
  852.     kDETcmdMaximumTextLength,
  853.     kDETcmdPropertyDirtied,
  854.     kDETcmdPatternIn,
  855.     kDETcmdPatternOut,
  856.     kDETcmdConvertToNumber,
  857.     kDETcmdConvertToRString,
  858.     kDETcmdConvertFromNumber,
  859.     kDETcmdConvertFromRString,
  860.     kDETcmdCustomViewDraw,
  861.     kDETcmdCustomViewMouseDown,
  862.     kDETcmdKeyPress,
  863.     kDETcmdPaste,
  864.     kDETcmdCustomMenuSelected,
  865.     kDETcmdCustomMenuEnabled,
  866.     kDETcmdHighCall                = 0xF0000000                    /* Force the type to be long */
  867. };
  868.  
  869. typedef unsigned long DETCallFunctions;
  870.  
  871. #define DETCallBlockHeader         \
  872.     DETCallFunctions reqFunction;     \
  873.     DETCallBack callBack;            \
  874.     long callBackPrivate;            \
  875.     long templatePrivate;
  876. #define DETCallBlockTargetedHeader  \
  877.     DETCallFunctions reqFunction;     \
  878.     DETCallBack callBack;            \
  879.     long callBackPrivate;            \
  880.     long templatePrivate;            \
  881.     long instancePrivate;            \
  882.     DETTargetSpecification target;     \
  883.     Boolean targetIsMainAspect;     \
  884.     Boolean filler1;
  885. #define DETCallBlockPropertyHeader  \
  886.     DETCallFunctions reqFunction;     \
  887.     DETCallBack callBack;            \
  888.     long callBackPrivate;            \
  889.     long templatePrivate;            \
  890.     long instancePrivate;            \
  891.     DETTargetSpecification target;     \
  892.     Boolean targetIsMainAspect;     \
  893.     Boolean filler1;             \
  894.     short property;
  895. struct DETProtoCallBlock {
  896.     DETCallFunctions                reqFunction;
  897.     DETCallBack                        callBack;
  898.     long                            callBackPrivate;
  899.     long                            templatePrivate;
  900.     long                            instancePrivate;
  901.     DETTargetSpecification            target;
  902.     Boolean                            targetIsMainAspect;
  903.     Boolean                            filler1;
  904.     short                            property;
  905. };
  906.  
  907. typedef struct DETProtoCallBlock DETProtoCallBlock;
  908.  
  909. struct DETInitBlock {
  910.     DETCallFunctions                reqFunction;
  911.     DETCallBack                        callBack;
  912.     long                            callBackPrivate;
  913.     long                            templatePrivate;
  914.     long                            newCallFors;                /* <-  New call-for mask */
  915. };
  916.  
  917. typedef struct DETInitBlock DETInitBlock;
  918.  
  919. struct DETExitBlock {
  920.     DETCallFunctions                reqFunction;
  921.     DETCallBack                        callBack;
  922.     long                            callBackPrivate;
  923.     long                            templatePrivate;
  924. };
  925.  
  926. typedef struct DETExitBlock DETExitBlock;
  927.  
  928. struct DETInstanceInitBlock {
  929.     DETCallFunctions                reqFunction;
  930.     DETCallBack                        callBack;
  931.     long                            callBackPrivate;
  932.     long                            templatePrivate;
  933.     long                            instancePrivate;
  934.     DETTargetSpecification            target;
  935.     Boolean                            targetIsMainAspect;
  936.     Boolean                            filler1;
  937. };
  938.  
  939. typedef struct DETInstanceInitBlock DETInstanceInitBlock;
  940.  
  941. struct DETInstanceExitBlock {
  942.     DETCallFunctions                reqFunction;
  943.     DETCallBack                        callBack;
  944.     long                            callBackPrivate;
  945.     long                            templatePrivate;
  946.     long                            instancePrivate;
  947.     DETTargetSpecification            target;
  948.     Boolean                            targetIsMainAspect;
  949.     Boolean                            filler1;
  950. };
  951.  
  952. typedef struct DETInstanceExitBlock DETInstanceExitBlock;
  953.  
  954. struct DETInstanceIdleBlock {
  955.     DETCallFunctions                reqFunction;
  956.     DETCallBack                        callBack;
  957.     long                            callBackPrivate;
  958.     long                            templatePrivate;
  959.     long                            instancePrivate;
  960.     DETTargetSpecification            target;
  961.     Boolean                            targetIsMainAspect;
  962.     Boolean                            filler1;
  963. };
  964.  
  965. typedef struct DETInstanceIdleBlock DETInstanceIdleBlock;
  966.  
  967. struct DETPropertyCommandBlock {
  968.     DETCallFunctions                reqFunction;
  969.     DETCallBack                        callBack;
  970.     long                            callBackPrivate;
  971.     long                            templatePrivate;
  972.     long                            instancePrivate;
  973.     DETTargetSpecification            target;
  974.     Boolean                            targetIsMainAspect;
  975.     Boolean                            filler1;
  976.     short                            property;
  977.     long                            parameter;                    /*  -> Parameter of command */
  978. };
  979.  
  980. typedef struct DETPropertyCommandBlock DETPropertyCommandBlock;
  981.  
  982. struct DETMaximumTextLengthBlock {
  983.     DETCallFunctions                reqFunction;
  984.     DETCallBack                        callBack;
  985.     long                            callBackPrivate;
  986.     long                            templatePrivate;
  987.     long                            instancePrivate;
  988.     DETTargetSpecification            target;
  989.     Boolean                            targetIsMainAspect;
  990.     Boolean                            filler1;
  991.     short                            property;
  992.     long                            maxSize;                    /* <-  Return the maximum number of characters the user can entry when property is edited in an EditText */
  993. };
  994.  
  995. typedef struct DETMaximumTextLengthBlock DETMaximumTextLengthBlock;
  996.  
  997. struct DETViewListChangedBlock {
  998.     DETCallFunctions                reqFunction;
  999.     DETCallBack                        callBack;
  1000.     long                            callBackPrivate;
  1001.     long                            templatePrivate;
  1002.     long                            instancePrivate;
  1003.     DETTargetSpecification            target;
  1004.     Boolean                            targetIsMainAspect;
  1005.     Boolean                            filler1;
  1006. };
  1007.  
  1008. typedef struct DETViewListChangedBlock DETViewListChangedBlock;
  1009.  
  1010. struct DETPropertyDirtiedBlock {
  1011.     DETCallFunctions                reqFunction;
  1012.     DETCallBack                        callBack;
  1013.     long                            callBackPrivate;
  1014.     long                            templatePrivate;
  1015.     long                            instancePrivate;
  1016.     DETTargetSpecification            target;
  1017.     Boolean                            targetIsMainAspect;
  1018.     Boolean                            filler1;
  1019.     short                            property;
  1020. };
  1021.  
  1022. typedef struct DETPropertyDirtiedBlock DETPropertyDirtiedBlock;
  1023.  
  1024. struct DETValidateSaveBlock {
  1025.     DETCallFunctions                reqFunction;
  1026.     DETCallBack                        callBack;
  1027.     long                            callBackPrivate;
  1028.     long                            templatePrivate;
  1029.     long                            instancePrivate;
  1030.     DETTargetSpecification            target;
  1031.     Boolean                            targetIsMainAspect;
  1032.     Boolean                            filler1;
  1033.     RStringHandle                    errorString;                /* <-  Handle with error string if validation fails (callee must allocate handle, DE will DisposHandle() it) */
  1034. };
  1035.  
  1036. typedef struct DETValidateSaveBlock DETValidateSaveBlock;
  1037.  
  1038. /* Valid commandIDs for DETDropQueryBlock and DETDropMeQueryBlock (in addition to property numbers): */
  1039.  
  1040. enum {
  1041.     kDETDoNothing                = 'xxx0',
  1042.     kDETMove                    = 'move',
  1043.     kDETDrag                    = 'drag',
  1044.     kDETAlias                    = 'alis'
  1045. };
  1046.  
  1047. struct DETDropQueryBlock {
  1048.     DETCallFunctions                reqFunction;
  1049.     DETCallBack                        callBack;
  1050.     long                            callBackPrivate;
  1051.     long                            templatePrivate;
  1052.     long                            instancePrivate;
  1053.     DETTargetSpecification            target;
  1054.     Boolean                            targetIsMainAspect;
  1055.     Boolean                            filler1;
  1056.     short                            modifiers;                    /*  -> Modifiers at drop time (option/control/command/shift keys) */
  1057.     long                            commandID;                    /* <-> Command ID (kDETDoNothing, kDETMove, kDETDrag (copy), kDETAlias, or a property number) */
  1058.     AttributeType                    destinationType;            /* <-> Type to convert attribute to */
  1059.     Boolean                            copyToHFS;                    /* <-  If true, object should be copied to HFS before being operated on, and deleted after */
  1060.     Boolean                            filler2;
  1061. };
  1062.  
  1063. typedef struct DETDropQueryBlock DETDropQueryBlock;
  1064.  
  1065. struct DETDropMeQueryBlock {
  1066.     DETCallFunctions                reqFunction;
  1067.     DETCallBack                        callBack;
  1068.     long                            callBackPrivate;
  1069.     long                            templatePrivate;
  1070.     long                            instancePrivate;
  1071.     DETTargetSpecification            target;
  1072.     Boolean                            targetIsMainAspect;
  1073.     Boolean                            filler1;
  1074.     short                            modifiers;                    /*  -> Modifiers at drop time (option/control/command/shift keys) */
  1075.     long                            commandID;                    /* <-> Command ID (kDETDoNothing, kDETMove, kDETDrag (copy), kDETAlias, or a property number) */
  1076.     AttributeType                    destinationType;            /* <-> Type to convert attribute to */
  1077.     Boolean                            copyToHFS;                    /* <-  If true, object should be copied to HFS before being operated on, and deleted after */
  1078.     Boolean                            filler2;
  1079. };
  1080.  
  1081. typedef struct DETDropMeQueryBlock DETDropMeQueryBlock;
  1082.  
  1083. struct DETAttributeCreationBlock {
  1084.     DETCallFunctions                reqFunction;
  1085.     DETCallBack                        callBack;
  1086.     long                            callBackPrivate;
  1087.     long                            templatePrivate;
  1088.     PackedDSSpecPtr                    parent;                        /*  -> The object within which the creation will occur */
  1089.     short                            refNum;                        /*  -> Refnum for returned address (DSSpecs in PDs only) */
  1090.     AuthIdentity                    identity;                    /*  -> The identity we're browsing as in the parent object */
  1091.     AttributeType                    attrType;                    /* <-> The type of the attribute being created */
  1092.     AttributeTag                    attrTag;                    /* <-> The tag of the attribute being created */
  1093.     Handle                            value;                        /* <-> The value to write (pre-allocated, resize as needed) */
  1094. };
  1095.  
  1096. typedef struct DETAttributeCreationBlock DETAttributeCreationBlock;
  1097.  
  1098. struct DETAttributeNewBlock {
  1099.     DETCallFunctions                reqFunction;
  1100.     DETCallBack                        callBack;
  1101.     long                            callBackPrivate;
  1102.     long                            templatePrivate;
  1103.     long                            instancePrivate;
  1104.     DETTargetSpecification            target;
  1105.     Boolean                            targetIsMainAspect;
  1106.     Boolean                            filler1;
  1107.     PackedDSSpecPtr                    parent;                        /*  -> The object within which the creation will occur */
  1108.     short                            refNum;                        /*  -> Refnum for returned address (DSSpecs in PDs only) */
  1109.     AuthIdentity                    identity;                    /*  -> The identity we're browsing as in the parent object */
  1110.     AttributeType                    attrType;                    /* <-> The type of the attribute being created */
  1111.     AttributeTag                    attrTag;                    /* <-> The tag of the attribute being created */
  1112.     Handle                            value;                        /* <-> The value to write (pre-allocated, resize as needed) */
  1113. };
  1114.  
  1115. typedef struct DETAttributeNewBlock DETAttributeNewBlock;
  1116.  
  1117. struct DETAttributeChangeBlock {
  1118.     DETCallFunctions                reqFunction;
  1119.     DETCallBack                        callBack;
  1120.     long                            callBackPrivate;
  1121.     long                            templatePrivate;
  1122.     long                            instancePrivate;
  1123.     DETTargetSpecification            target;
  1124.     Boolean                            targetIsMainAspect;
  1125.     Boolean                            filler1;
  1126.     PackedDSSpecPtr                    parent;                        /*  -> The object within which the creation will occur */
  1127.     short                            refNum;                        /*  -> Refnum for returned address (DSSpecs in PDs only) */
  1128.     AuthIdentity                    identity;                    /*  -> The identity we're browsing as in the parent object */
  1129.     AttributeType                    attrType;                    /* <-> The type of the attribute being changed */
  1130.     AttributeTag                    attrTag;                    /* <-> The tag of the attribute being changed */
  1131.     AttributeCreationID                attrCID;                    /* <-> The CID of the attribute being changed */
  1132.     Handle                            value;                        /* <-> The value to write (pre-allocated, resize as needed) */
  1133. };
  1134.  
  1135. typedef struct DETAttributeChangeBlock DETAttributeChangeBlock;
  1136.  
  1137. struct DETAttributeDeleteBlock {
  1138.     DETCallFunctions                reqFunction;
  1139.     DETCallBack                        callBack;
  1140.     long                            callBackPrivate;
  1141.     long                            templatePrivate;
  1142.     long                            instancePrivate;
  1143.     DETTargetSpecification            target;
  1144.     Boolean                            targetIsMainAspect;
  1145.     Boolean                            filler1;
  1146.     PackedDSSpecPtr                    dsSpec;                        /*  -> The object which will be deleted */
  1147.     short                            refNum;                        /*  -> Refnum for returned address (DSSpecs in PDs only) */
  1148.     AuthIdentity                    identity;                    /*  -> The identity we're browsing as */
  1149. };
  1150.  
  1151. typedef struct DETAttributeDeleteBlock DETAttributeDeleteBlock;
  1152.  
  1153. struct DETItemNewBlock {
  1154.     DETCallFunctions                reqFunction;
  1155.     DETCallBack                        callBack;
  1156.     long                            callBackPrivate;
  1157.     long                            templatePrivate;
  1158.     long                            instancePrivate;
  1159.     DETTargetSpecification            target;
  1160.     Boolean                            targetIsMainAspect;
  1161.     Boolean                            filler1;
  1162. };
  1163.  
  1164. typedef struct DETItemNewBlock DETItemNewBlock;
  1165.  
  1166. struct DETShouldSyncBlock {
  1167.     DETCallFunctions                reqFunction;
  1168.     DETCallBack                        callBack;
  1169.     long                            callBackPrivate;
  1170.     long                            templatePrivate;
  1171.     long                            instancePrivate;
  1172.     DETTargetSpecification            target;
  1173.     Boolean                            targetIsMainAspect;
  1174.     Boolean                            filler1;
  1175.     Boolean                            shouldSync;                    /* <-  True if we should now sync with catalog */
  1176.     Boolean                            filler2;
  1177. };
  1178.  
  1179. typedef struct DETShouldSyncBlock DETShouldSyncBlock;
  1180.  
  1181. struct DETDoSyncBlock {
  1182.     DETCallFunctions                reqFunction;
  1183.     DETCallBack                        callBack;
  1184.     long                            callBackPrivate;
  1185.     long                            templatePrivate;
  1186.     long                            instancePrivate;
  1187.     DETTargetSpecification            target;
  1188.     Boolean                            targetIsMainAspect;
  1189.     Boolean                            filler1;
  1190. };
  1191.  
  1192. typedef struct DETDoSyncBlock DETDoSyncBlock;
  1193.  
  1194. struct DETPatternInBlock {
  1195.     DETCallFunctions                reqFunction;
  1196.     DETCallBack                        callBack;
  1197.     long                            callBackPrivate;
  1198.     long                            templatePrivate;
  1199.     long                            instancePrivate;
  1200.     DETTargetSpecification            target;
  1201.     Boolean                            targetIsMainAspect;
  1202.     Boolean                            filler1;
  1203.     short                            property;
  1204.     long                            elementType;                /*  -> Element type from pattern */
  1205.     long                            extra;                        /*  -> Extra field from pattern */
  1206.     AttributePtr                    attribute;                    /*  -> The complete attribute */
  1207.     long                            dataOffset;                    /* <-> Offset to current (next) byte */
  1208.     short                            bitOffset;                    /* <-> Bit offset (next bit is *fData >> fBitOffset++) */
  1209. };
  1210.  
  1211. typedef struct DETPatternInBlock DETPatternInBlock;
  1212.  
  1213. struct DETPatternOutBlock {
  1214.     DETCallFunctions                reqFunction;
  1215.     DETCallBack                        callBack;
  1216.     long                            callBackPrivate;
  1217.     long                            templatePrivate;
  1218.     long                            instancePrivate;
  1219.     DETTargetSpecification            target;
  1220.     Boolean                            targetIsMainAspect;
  1221.     Boolean                            filler1;
  1222.     short                            property;
  1223.     long                            elementType;                /*  -> Element type from pattern */
  1224.     long                            extra;                        /*  -> Extra field from pattern */
  1225.     AttributePtr                    attribute;                    /*  -> The attribute (minus the data portion) */
  1226.     Handle                            data;                        /*  -> Data to be written (pre-allocated, resize and add at end) */
  1227.     long                            dataOffset;                    /* <-> Offset to next byte to write */
  1228.     short                            bitOffset;                    /* <-> Bit offset (if zero, handle will need to be resized to one more byte before write) */
  1229. };
  1230.  
  1231. typedef struct DETPatternOutBlock DETPatternOutBlock;
  1232.  
  1233. struct DETOpenSelfBlock {
  1234.     DETCallFunctions                reqFunction;
  1235.     DETCallBack                        callBack;
  1236.     long                            callBackPrivate;
  1237.     long                            templatePrivate;
  1238.     long                            instancePrivate;
  1239.     DETTargetSpecification            target;
  1240.     Boolean                            targetIsMainAspect;
  1241.     Boolean                            filler1;
  1242.     short                            modifiers;                    /*  -> Modifiers at open time (option/control/command/shift keys) */
  1243. };
  1244.  
  1245. typedef struct DETOpenSelfBlock DETOpenSelfBlock;
  1246.  
  1247. struct DETConvertToNumberBlock {
  1248.     DETCallFunctions                reqFunction;
  1249.     DETCallBack                        callBack;
  1250.     long                            callBackPrivate;
  1251.     long                            templatePrivate;
  1252.     long                            instancePrivate;
  1253.     DETTargetSpecification            target;
  1254.     Boolean                            targetIsMainAspect;
  1255.     Boolean                            filler1;
  1256.     short                            property;
  1257.     long                            theValue;                    /* <-  The converted value to return */
  1258. };
  1259.  
  1260. typedef struct DETConvertToNumberBlock DETConvertToNumberBlock;
  1261.  
  1262. struct DETConvertToRStringBlock {
  1263.     DETCallFunctions                reqFunction;
  1264.     DETCallBack                        callBack;
  1265.     long                            callBackPrivate;
  1266.     long                            templatePrivate;
  1267.     long                            instancePrivate;
  1268.     DETTargetSpecification            target;
  1269.     Boolean                            targetIsMainAspect;
  1270.     Boolean                            filler1;
  1271.     short                            property;
  1272.     RStringHandle                    theValue;                    /* <-  A handle with the converted value (callee must allocate handle, DE will DisposHandle() it) */
  1273. };
  1274.  
  1275. typedef struct DETConvertToRStringBlock DETConvertToRStringBlock;
  1276.  
  1277. struct DETConvertFromNumberBlock {
  1278.     DETCallFunctions                reqFunction;
  1279.     DETCallBack                        callBack;
  1280.     long                            callBackPrivate;
  1281.     long                            templatePrivate;
  1282.     long                            instancePrivate;
  1283.     DETTargetSpecification            target;
  1284.     Boolean                            targetIsMainAspect;
  1285.     Boolean                            filler1;
  1286.     short                            property;
  1287.     long                            theValue;                    /*  -> The value to convert (result should be written direct to the property) */
  1288. };
  1289.  
  1290. typedef struct DETConvertFromNumberBlock DETConvertFromNumberBlock;
  1291.  
  1292. struct DETConvertFromRStringBlock {
  1293.     DETCallFunctions                reqFunction;
  1294.     DETCallBack                        callBack;
  1295.     long                            callBackPrivate;
  1296.     long                            templatePrivate;
  1297.     long                            instancePrivate;
  1298.     DETTargetSpecification            target;
  1299.     Boolean                            targetIsMainAspect;
  1300.     Boolean                            filler1;
  1301.     short                            property;
  1302.     RStringPtr                        theValue;                    /*  -> The value to convert (result should be written direct to the property) */
  1303. };
  1304.  
  1305. typedef struct DETConvertFromRStringBlock DETConvertFromRStringBlock;
  1306.  
  1307. struct DETCustomViewDrawBlock {
  1308.     DETCallFunctions                reqFunction;
  1309.     DETCallBack                        callBack;
  1310.     long                            callBackPrivate;
  1311.     long                            templatePrivate;
  1312.     long                            instancePrivate;
  1313.     DETTargetSpecification            target;
  1314.     Boolean                            targetIsMainAspect;
  1315.     Boolean                            filler1;
  1316.     short                            property;
  1317. };
  1318.  
  1319. typedef struct DETCustomViewDrawBlock DETCustomViewDrawBlock;
  1320.  
  1321. struct DETCustomViewMouseDownBlock {
  1322.     DETCallFunctions                reqFunction;
  1323.     DETCallBack                        callBack;
  1324.     long                            callBackPrivate;
  1325.     long                            templatePrivate;
  1326.     long                            instancePrivate;
  1327.     DETTargetSpecification            target;
  1328.     Boolean                            targetIsMainAspect;
  1329.     Boolean                            filler1;
  1330.     short                            property;
  1331.     EventRecord                        *theEvent;                    /*  -> The original event record of the mouse-down */
  1332. };
  1333.  
  1334. typedef struct DETCustomViewMouseDownBlock DETCustomViewMouseDownBlock;
  1335.  
  1336. struct DETKeyPressBlock {
  1337.     DETCallFunctions                reqFunction;
  1338.     DETCallBack                        callBack;
  1339.     long                            callBackPrivate;
  1340.     long                            templatePrivate;
  1341.     long                            instancePrivate;
  1342.     DETTargetSpecification            target;
  1343.     Boolean                            targetIsMainAspect;
  1344.     Boolean                            filler1;
  1345.     short                            property;
  1346.     EventRecord                        *theEvent;                    /*  -> The original event record of the key-press */
  1347. };
  1348.  
  1349. typedef struct DETKeyPressBlock DETKeyPressBlock;
  1350.  
  1351. struct DETPasteBlock {
  1352.     DETCallFunctions                reqFunction;
  1353.     DETCallBack                        callBack;
  1354.     long                            callBackPrivate;
  1355.     long                            templatePrivate;
  1356.     long                            instancePrivate;
  1357.     DETTargetSpecification            target;
  1358.     Boolean                            targetIsMainAspect;
  1359.     Boolean                            filler1;
  1360.     short                            property;
  1361.     short                            modifiers;                    /*  -> Modifiers at paste time (option/control/command/shift keys) */
  1362. };
  1363.  
  1364. typedef struct DETPasteBlock DETPasteBlock;
  1365.  
  1366. struct DETCustomMenuSelectedBlock {
  1367.     DETCallFunctions                reqFunction;
  1368.     DETCallBack                        callBack;
  1369.     long                            callBackPrivate;
  1370.     long                            templatePrivate;
  1371.     long                            instancePrivate;
  1372.     DETTargetSpecification            target;
  1373.     Boolean                            targetIsMainAspect;
  1374.     Boolean                            filler1;
  1375.     short                            menuTableParameter;            /*  -> The "property" field from the custom menu table */
  1376. };
  1377.  
  1378. typedef struct DETCustomMenuSelectedBlock DETCustomMenuSelectedBlock;
  1379.  
  1380. struct DETCustomMenuEnabledBlock {
  1381.     DETCallFunctions                reqFunction;
  1382.     DETCallBack                        callBack;
  1383.     long                            callBackPrivate;
  1384.     long                            templatePrivate;
  1385.     long                            instancePrivate;
  1386.     DETTargetSpecification            target;
  1387.     Boolean                            targetIsMainAspect;
  1388.     Boolean                            filler1;
  1389.     short                            menuTableParameter;            /*  -> The "property" field from the custom menu table */
  1390.     Boolean                            enable;                        /* <-  Whether to enable the menu item */
  1391.     Boolean                            filler2;
  1392. };
  1393.  
  1394. typedef struct DETCustomMenuEnabledBlock DETCustomMenuEnabledBlock;
  1395.  
  1396. struct DETForwarderListItem {
  1397.     struct DETForwarderListItem        **next;                        /* Pointer to next item, or nil */
  1398.     AttributeTag                    attributeValueTag;            /* Tag of new templates (0 for none) */
  1399.     PackedPathName                    rstrs;                        /* Record type (empty if none), attrbute type (empty if none),
  1400.                                                 list of template names to forward to */
  1401. };
  1402.  
  1403. typedef struct DETForwarderListItem **DETForwarderListHandle;
  1404.  
  1405. struct DETDynamicForwardersBlock {
  1406.     DETCallFunctions                reqFunction;
  1407.     DETCallBack                        callBack;
  1408.     long                            callBackPrivate;
  1409.     long                            templatePrivate;
  1410.     DETForwarderListHandle            forwarders;                    /* <-  List of forwaders */
  1411. };
  1412.  
  1413. typedef struct DETDynamicForwardersBlock DETDynamicForwardersBlock;
  1414.  
  1415. struct DETDynamicResourceBlock {
  1416.     DETCallFunctions                reqFunction;
  1417.     DETCallBack                        callBack;
  1418.     long                            callBackPrivate;
  1419.     long                            templatePrivate;
  1420.     long                            instancePrivate;
  1421.     DETTargetSpecification            target;
  1422.     Boolean                            targetIsMainAspect;
  1423.     Boolean                            filler1;
  1424.     ResType                            resourceType;                /*  -> The resource type being requested */
  1425.     short                            propertyNumber;                /*  -> The property number of the resource being requested */
  1426.     short                            resourceID;                    /*  -> The resource ID (base ID + property number) of the resource */
  1427.     Handle                            theResource;                /* <-  The requested resource */
  1428. };
  1429.  
  1430. typedef struct DETDynamicResourceBlock DETDynamicResourceBlock;
  1431.  
  1432. union DETCallBlock {
  1433.     DETProtoCallBlock                protoCall;
  1434.     DETInitBlock                    init;
  1435.     DETExitBlock                    exit;
  1436.     DETInstanceInitBlock            instanceInit;
  1437.     DETInstanceExitBlock            instanceExit;
  1438.     DETInstanceIdleBlock            instanceIdle;
  1439.     DETPropertyCommandBlock            propertyCommand;
  1440.     DETMaximumTextLengthBlock        maximumTextLength;
  1441.     DETViewListChangedBlock            viewListChanged;
  1442.     DETPropertyDirtiedBlock            propertyDirtied;
  1443.     DETValidateSaveBlock            validateSave;
  1444.     DETDropQueryBlock                dropQuery;
  1445.     DETDropMeQueryBlock                dropMeQuery;
  1446.     DETAttributeCreationBlock        attributeCreationBlock;
  1447.     DETAttributeNewBlock            attributeNew;
  1448.     DETAttributeChangeBlock            attributeChange;
  1449.     DETAttributeDeleteBlock            attributeDelete;
  1450.     DETItemNewBlock                    itemNew;
  1451.     DETPatternInBlock                patternIn;
  1452.     DETPatternOutBlock                patternOut;
  1453.     DETShouldSyncBlock                shouldSync;
  1454.     DETDoSyncBlock                    doSync;
  1455.     DETOpenSelfBlock                openSelf;
  1456.     DETConvertToNumberBlock            convertToNumber;
  1457.     DETConvertToRStringBlock        convertToRString;
  1458.     DETConvertFromNumberBlock        convertFromNumber;
  1459.     DETConvertFromRStringBlock        convertFromRString;
  1460.     DETCustomViewDrawBlock            customViewDraw;
  1461.     DETCustomViewMouseDownBlock        customViewMouseDown;
  1462.     DETKeyPressBlock                keyPress;
  1463.     DETPasteBlock                    paste;
  1464.     DETCustomMenuSelectedBlock        customMenuSelected;
  1465.     DETCustomMenuEnabledBlock        customMenuEnabled;
  1466.     DETDynamicForwardersBlock        dynamicForwarders;
  1467.     DETDynamicResourceBlock            dynamicResource;
  1468. };
  1469. typedef union DETCallBlock DETCallBlock;
  1470.  
  1471. typedef DETCallBlock *DETCallBlockPtr;
  1472.  
  1473. enum {
  1474.     uppDETCallBackProcInfo = kPascalStackBased
  1475.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  1476.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DETCallBlock*)))
  1477.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(DETCallBackBlockPtr)))
  1478. };
  1479.  
  1480. #if GENERATINGCFM
  1481. #define CallDETCallBackProc(userRoutine, callBlockPtr, callBackBlockPtr)        \
  1482.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDETCallBackProcInfo, (callBlockPtr), (callBackBlockPtr))
  1483. #else
  1484. #define CallDETCallBackProc(userRoutine, callBlockPtr, callBackBlockPtr)        \
  1485.         (*(userRoutine))((callBlockPtr), (callBackBlockPtr))
  1486. #endif
  1487.  
  1488. #if GENERATINGCFM
  1489. #define NewDETCallBackProc(userRoutine)        \
  1490.         (DETCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDETCallBackProcInfo, GetCurrentArchitecture())
  1491. #else
  1492. #define NewDETCallBackProc(userRoutine)        \
  1493.         ((DETCallBackUPP) (userRoutine))
  1494. #endif
  1495.  
  1496.  
  1497. enum {
  1498.     kDETCallForOther            = 1,                            /* Call for things not listed below (also auto-enabled by DE if any of the below are enabled) */
  1499.     kDETCallForIdle                = 2,                            /* kDETcmdIdle */
  1500.     kDETCallForCommands            = 4,                            /* kDETcmdPropertyCommand, kDETcmdSelfOpen */
  1501.     kDETCallForViewChanges        = 8,                            /* kDETcmdViewListChanged, kDETcmdPropertyDirtied, kDETcmdMaximumTextLength */
  1502.     kDETCallForDrops            = 0x10,                            /* kDETcmdDropQuery, kDETcmdDropMeQuery */
  1503.     kDETCallForAttributes        = 0x20,                            /* kDETcmdAttributeCreation, kDETcmdAttributeNew, kDETcmdAttributeChange, kDETcmdAttributeDelete */
  1504.     kDETCallForValidation        = 0x40,                            /* kDETcmdValidateSave */
  1505.     kDETCallForKeyPresses        = 0x80,                            /* kDETcmdKeyPress and kDETcmdPaste */
  1506.     kDETCallForResources        = 0x100,                        /* kDETcmdDynamicResource */
  1507.     kDETCallForSyncing            = 0x200,                        /* kDETcmdShouldSync, kDETcmdDoSync */
  1508.     kDETCallForEscalation        = 0x8000,                        /* All calls escalated from the next lower level */
  1509.     kDETCallForNothing            = 0,                            /* None of the above
  1510.     * All of the above */
  1511.     kDETCallForEverything        = 0xFFFFFFFF
  1512. };
  1513.  
  1514. typedef pascal OSErr (*DETCallProcPtr)(DETCallBlockPtr callBlockPtr);
  1515.  
  1516. #if GENERATINGCFM
  1517. typedef UniversalProcPtr DETCallUPP;
  1518. #else
  1519. typedef DETCallProcPtr DETCallUPP;
  1520. #endif
  1521.  
  1522. enum {
  1523.     uppDETCallProcInfo = kPascalStackBased
  1524.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  1525.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DETCallBlockPtr)))
  1526. };
  1527.  
  1528. #if GENERATINGCFM
  1529. #define NewDETCallProc(userRoutine)        \
  1530.         (DETCallUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDETCallProcInfo, GetCurrentArchitecture())
  1531. #else
  1532. #define NewDETCallProc(userRoutine)        \
  1533.         ((DETCallUPP) (userRoutine))
  1534. #endif
  1535.  
  1536. #if GENERATINGCFM
  1537. #define CallDETCallProc(userRoutine, callBlockPtr)        \
  1538.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDETCallProcInfo, (callBlockPtr))
  1539. #else
  1540. #define CallDETCallProc(userRoutine, callBlockPtr)        \
  1541.         (*(userRoutine))((callBlockPtr))
  1542. #endif
  1543.  
  1544. typedef DETCallUPP DETCall;
  1545.  
  1546. /* This following macro saves you from having to dig out the call-back pointer from the call block: */
  1547. #define CallBackDET(callBlockPtr, callBackBlockPtr) CallDETCallBackProc(callBlockPtr->protoCall.callBack,callBlockPtr,callBackBlockPtr)
  1548. #endif /* REZ */
  1549. #define kSAMFirstDevProperty kDETFirstDevProperty + 10
  1550. #define kSAMAspectUserName kDETFirstDevProperty + 1
  1551. #define kSAMAspectKind kDETFirstDevProperty + 2
  1552. #define kSAMAspectCannotDelete kDETFirstDevProperty + 3
  1553. #define kSAMAspectSlotCreationInfo kDETFirstDevProperty + 4
  1554. #define kDETAdminVersion -978
  1555. #ifndef REZ
  1556.  
  1557. #if PRAGMA_IMPORT_SUPPORTED
  1558. #pragma import off
  1559. #endif
  1560.  
  1561. #if PRAGMA_ALIGN_SUPPORTED
  1562. #pragma options align=reset
  1563. #endif
  1564.  
  1565. #ifdef __cplusplus
  1566. }
  1567. #endif
  1568.  
  1569. #endif /* REZ */
  1570. #endif /* __OCETEMPLATES__ */
  1571.